.wrapper {
    width: 100%;
    height: 100%;
    display: flex;
    position: relative;
}

.left {
    width: 50%;
    height: 100%;
    padding-left: 20px;
    position: relative;
    box-sizing: border-box;
    overflow-y: auto;

    &::-webkit-scrollbar {
        display: none;
    }

    .header {
        z-index: 100;
        display: flex;
        position: fixed;
        background-color: #fff;
        width: calc(50% - 20px);
        height: 80px;
        align-items: center;
        box-sizing: border-box;

        .title {
            font-size: 16px;
            font-weight: 600;
        }

        .desc {
            margin-left: 40px;
            font-size: 12px;
        }
    }

    .photos {
        width: 100%;
        padding: 100px 40px 100px 0;
        background-color: #fff;
        box-sizing: border-box;

        .gridBox {
            width: 100%;
            display: grid;
            grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
            align-items: start;
            column-gap: 30px;
            row-gap: 40px;
        }

        .photoItem {
            width: 150px;
            height: 220px;
            position: relative;
            cursor: pointer;
            margin: 0 16px;
            filter: grayscale(1);
            transition: filter 1s ease-out;

            &:hover {
                filter: grayscale(0);
            }

            .index {
                position: absolute;
                top: 0;
                left: -16px;
                font-size: 10px;
                color: #222;
            }


            img {
                width: 100%;
                height: 100%;
                object-fit: cover;
            }
        }
    }
}

.right {
    width: 50%;
    height: 100%;
    background-color: #f2f2f2;
    display: flex;
    flex-direction: row;
    justify-content: center;
    align-items: center;
    position: relative;
    overflow: hidden;

    .viewBox {
        width: 50%;
        height: 100%;

        .viewItem {
            position: relative;
            display: flex;
            width: 100%;
            height: 100%;
            justify-content: center;
            align-items: center;

            .viewImage {
                max-width: 100%;
                max-height: 80%;
                object-fit: contain;
                perspective: 30px;

                /*clip-path: polygon(100% 100%, 0 100%, 100% 0);*/
                transform-origin: bottom center;
                transform-style: preserve-3d;
            }

            .bottomLine {
                position: absolute;
                height: 2px;
                background-color: transparent;
                will-change: width;       /* 提前告诉浏览器要做动画 */
                transform: scaleY(0.999); /* 微调触发抗锯齿最少路径 */
            }
        }
    }
}

@keyframes removeGrayscale {
    from {
        filter: grayscale(1);
    }
    to {
        filter: grayscale(0);
    }
}

@keyframes addGrayscale {
    from {
        filter: grayscale(0);
    }
    to {
        filter: grayscale(1);
    }
}